package com.rednote.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.rednote.entity.Users;
import com.rednote.entity.vo.UserProfileVO;

import java.util.List;

/**
 * 用户基本信息表(Users)服务接口
 *
 * @author yao suxuan
 * @since 2025-05-24 17:50:50
 */
public interface UsersService extends IService<Users> {
    /**
     * 用户注册
     * @param user 用户信息
     * @return 注册成功返回用户信息，失败返回null
     */
    Users register(Users user);
    
    /**
     * 用户登录
     * @param account 账号
     * @param password 密码
     * @return 登录成功返回用户信息，失败返回null
     */
    Users login(String account, String password);

    /**
     * 获取用户信息
     * @return 用户信息，如果token无效或用户不存在则返回null
     */
    UserProfileVO getUserInfo(Integer userId);

    /**
     * 更新用户信息
     * @param userId 用户id
     * @param user 要更新的用户信息
     * @return 更新后的用户信息，如果更新失败返回null
     */
    Users updateUserInfo(Integer userId, Users user);

    /**
     * 获取用户的角色和权限列表
     * @param userId 用户ID
     * @return 角色和权限列表（格式：ROLE_xxx 或 xxx_PERMISSION）
     */
    List<String> getUserAuthorities(Integer userId);

    /**
     * 修改密码
     * @param token JWT token
     * @param oldPassword 旧密码
     * @param newPassword 新密码
     * @return 修改结果
     */
    boolean updatePassword(String token, String oldPassword, String newPassword);
}
